// #include <stdio.h>
//
// int fib(int n )//digui
// {
//     if(n<=2)
//         return 1;
//     else
//         return fib(n-1)+fib(n-2);
// }
//
// int main()
// {
//     int n = 0;
//     printf("plesae input a number:");
//     scanf("%d",&n);
//     int sum = fib(n);
//     printf("%d",sum);
//     return 0;
// }
//
// int fib (int n )//非递归实现fib
// {
//     int pre_result = 1;
//     int next_result;
//     int result = 1;
//     while(n>2)
//     {
//         n=n-1;
//         next_result=pre_result;//下一次循环的nr为上一次的pr
//         pre_result=result;//下一次循环中的pre为上一次循环的结果
//         result = pre_result+next_result;
//     }
//     return result;
// }

// #include<stdio.h>
//
// int my_strlen(char arr[])
// {
//     int i = 0;
//     while (arr[i]!='\0')
//     {
//         i++;
//     }
//     return i;
// }
//
// void reverse_string(char arr[],int left,int right)
// {
//     if(left<right)
//     {
//         char tmp = arr[left];
//         arr[left]= arr[right];
//         arr[right]=tmp;
//         reverse_string(arr,left+1,right-1);
//     }
// }
//
// int main()
// {
//     char arr[] = "abcdefg";
//     int left = 0;
//     int right = my_strlen(arr)-1;
//     reverse_string(arr,left,right);
//     printf("%s\n",arr);
//     return 0;
// }

#include<stdio.h>//n--factorial--recursive

long long n_factorial(int n)
{
    if(n>1)
    {
        return n*n_factorial(n-1);
    }
    return n;
}

long long non_recursive(int n)
{
    int i = 0;
    int sum = 1;
    for(i=1;i<=n;i++)
    {
        sum = sum *i;
    }
    return sum;
}

int main()
{
    int n = 0;
    scanf("%d",&n);
    long long sum = n_factorial(n);
    printf("%ld",sum);
    return 0;
}